home *** CD-ROM | disk | FTP | other *** search
- {This is a Screen saver, that passed X time blank screen if no pressed a Key}
-
- { - TSR.PAS - }
-
- {$M 6000,0,0}
- {$R-,S-,I-,D+,F+,V-,B-,N-,L+}
-
- Uses Dos,Crt,Graph,Screen;
- { The code for SCREEN.PAS is in the SCREEN.SWG file }
- Const
- KeyBdInt = $09;
- TimerInt = $08;
- ScreenOn:Boolean = True;
- Seconds = 10; {Time to activate}
- Counter:Word = 0;
- Var
- Regs:Registers;
- OldKbdVec,OldTimerVec:Pointer;
- S:ScreenStore;
- Procedure STI; Inline($FB);
- Procedure CLI; Inline($FA);
- Procedure CallOldInt(Sub:Pointer);
- Begin
- Inline($9C/$FF/$5E/$06);
- End;
- Procedure KeyBoard(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word); Interrupt;
- Begin
- Counter:=0;
- If Not(ScreenOn) Then
- Begin
- S.RestoreScreen;
- ScreenOn:=True;
- End;
- CallOldInt(OldKbdVec);
- STI;
- End;
- Procedure Timer(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word); Interrupt;
- Begin
- If ScreenOn Then
- Begin
- Inc(Counter);
- If Counter>(Trunc(18.2*Seconds)) Then
- Begin
- S.StoreScreen;
- ClrScr;
- ScreenOn:=False;
- End;
- End;
- CallOldInt(OldTimerVec);
- STI;
- End;
- Begin
- S.Init(1,1,178,7);
- GetIntVec(KeyBdInt,OldKbdVec);
- SetIntVec(KeyBdInt,@KeyBoard);
- GetIntVec(TimerInt,OldTimerVec);
- SetIntVec(TimerInt,@Timer);
- Keep(0);
-
- End.